{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1. 删掉 ST\n",
    "2. 删掉业绩亏损\n",
    "3. 删掉净资产为负\n",
    "4. 选取市盈率前 200 名\n",
    "5. 选取市净率 200 名\n",
    "6. MA-5 > MA - 21 且缺口变大 $\\Rightarrow$ 可能会继续向上 || MA-21 > MA-5 且缺口变小 $\\Rightarrow$ 可能会金叉"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import tushare as ts\n",
    "import numpy as np\n",
    "import datetime\n",
    "import loess\n",
    "import pandas as pd\n",
    "import scipy.stats as stats\n",
    "from scipy.interpolate import interp1d\n",
    "import matplotlib.pyplot as plt\n",
    "import statsmodels.api as sm\n",
    "import statsmodels.tsa.stattools as sm_ts_tools\n",
    "from dateutil.relativedelta import relativedelta\n",
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "## Set up the date\n",
    "today = '20' + datetime.date.today().strftime('%y%m%d')\n",
    "\n",
    "index_all = ts.get_today_all()\n",
    "\n",
    "df1 = index_all.copy()  #建立一个备份\n",
    "n = 200  #选择前n个数据\n",
    "\n",
    "df1['a']=[('ST' in x )for x in df1.name.astype(str)]  #先给ST股票做标记a\n",
    "df1=df1.set_index('a')  #将a设置为索引 \n",
    "df1=df1.drop(index=[True]) #删除ST股票\n",
    "df1=df1.reset_index(drop=True) #重建默认索引\n",
    "\n",
    "#删除业绩亏损的股票\n",
    "df1 = df1[df1.per >0]\n",
    "\n",
    "#删除净资产为负的股票\n",
    "df1 = df1[df1.pb >0]\n",
    "\n",
    "#选取市盈率前 200 名股票\n",
    "df2 = df1.sort_values(by=['per'],ascending=True).head(n)\n",
    "#print(len(df2))\n",
    "#选取市净率 200 名股票\n",
    "df3 = df1.sort_values(by=['pb'],ascending=True).head(n)\n",
    "#print(len(df3))\n",
    "#生成股票代码集合，进行集合运算\n",
    "g2 = set(df2.code) #低市盈率股票代码\n",
    "#print(len(g2))\n",
    "g3 = set(df3.code) #低市净率股票代码\n",
    "#print(len(g3))\n",
    "g = g2&g3 #集合交运算\n",
    "#print(len(g))\n",
    "pending_list = list(g)  #把集合转为列表\n",
    "print('Basic Selection:',pending_list, \"Totally:\", len(pending_list))\n",
    "\n",
    "pending_list_csv = pd.DataFrame({\"Code\":pending_list})\n",
    "pending_list_csv.to_csv(\"pending_list.csv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "  1%|          | 1/85 [00:00<01:09,  1.21it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 600382\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      "  2%|▏         | 2/85 [00:01<01:09,  1.19it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 601390\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      "  4%|▎         | 3/85 [00:02<01:08,  1.19it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 000980\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      "  5%|▍         | 4/85 [00:03<01:08,  1.18it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 601997\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      "  6%|▌         | 5/85 [00:04<01:07,  1.19it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 601699\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      "  7%|▋         | 6/85 [00:05<01:06,  1.19it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 600012\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      "  8%|▊         | 7/85 [00:05<01:06,  1.18it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 601398\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      "  9%|▉         | 8/85 [00:06<01:05,  1.17it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 000825\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 11%|█         | 9/85 [00:07<01:04,  1.19it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 000732\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 12%|█▏        | 10/85 [00:08<01:05,  1.14it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 600016\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 13%|█▎        | 11/85 [00:09<01:04,  1.14it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 600926\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 14%|█▍        | 12/85 [00:10<01:03,  1.15it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 600019\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 16%|█▋        | 14/85 [00:12<01:01,  1.16it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 601009\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 18%|█▊        | 15/85 [00:12<00:59,  1.17it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 000926\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 19%|█▉        | 16/85 [00:13<00:58,  1.19it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 600569\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 20%|██        | 17/85 [00:14<00:56,  1.19it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 601166\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 21%|██        | 18/85 [00:15<00:55,  1.21it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 601588\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 22%|██▏       | 19/85 [00:16<00:55,  1.19it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 601669\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 24%|██▎       | 20/85 [00:17<00:54,  1.20it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(5) > MA(21) 600051\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 25%|██▍       | 21/85 [00:17<00:52,  1.21it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 002133\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 26%|██▌       | 22/85 [00:18<00:54,  1.16it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 000040\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 27%|██▋       | 23/85 [00:19<00:52,  1.18it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 000778\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 28%|██▊       | 24/85 [00:20<00:53,  1.14it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 000039\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 31%|███       | 26/85 [00:22<00:49,  1.18it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 600000\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 32%|███▏      | 27/85 [00:22<00:48,  1.19it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 600188\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 33%|███▎      | 28/85 [00:23<00:47,  1.20it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 601838\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 34%|███▍      | 29/85 [00:24<00:40,  1.39it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 601077\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 35%|███▌      | 30/85 [00:25<00:42,  1.30it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 601288\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 36%|███▋      | 31/85 [00:26<00:43,  1.25it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 600743\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 38%|███▊      | 32/85 [00:26<00:42,  1.25it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 600269\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 39%|███▉      | 33/85 [00:27<00:43,  1.21it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 601818\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 40%|████      | 34/85 [00:28<00:42,  1.20it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 601328\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 41%|████      | 35/85 [00:29<00:41,  1.21it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 600657\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 42%|████▏     | 36/85 [00:30<00:40,  1.22it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 002092\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 44%|████▎     | 37/85 [00:31<00:41,  1.15it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 600919\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 45%|████▍     | 38/85 [00:31<00:39,  1.18it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 600376\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 46%|████▌     | 39/85 [00:32<00:40,  1.15it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 600308\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 47%|████▋     | 40/85 [00:33<00:38,  1.17it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 600859\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 48%|████▊     | 41/85 [00:34<00:37,  1.19it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 600153\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 49%|████▉     | 42/85 [00:35<00:35,  1.21it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 601577\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 51%|█████     | 43/85 [00:36<00:35,  1.18it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 000898\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 52%|█████▏    | 44/85 [00:37<00:36,  1.13it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 600015\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 53%|█████▎    | 45/85 [00:38<00:35,  1.14it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 601169\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 54%|█████▍    | 46/85 [00:38<00:35,  1.10it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 601998\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 55%|█████▌    | 47/85 [00:39<00:33,  1.13it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 601939\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 56%|█████▋    | 48/85 [00:40<00:33,  1.12it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 601186\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 58%|█████▊    | 49/85 [00:41<00:31,  1.13it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 000402\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 59%|█████▉    | 50/85 [00:42<00:30,  1.16it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 600823\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 60%|██████    | 51/85 [00:43<00:28,  1.18it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 600348\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 61%|██████    | 52/85 [00:44<00:28,  1.17it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 600623\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 62%|██████▏   | 53/85 [00:44<00:27,  1.17it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 603323\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 65%|██████▍   | 55/85 [00:46<00:24,  1.20it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 601229\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 66%|██████▌   | 56/85 [00:47<00:24,  1.18it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 600123\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 67%|██████▋   | 57/85 [00:48<00:24,  1.15it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 601005\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 68%|██████▊   | 58/85 [00:49<00:23,  1.16it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 601000\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 69%|██████▉   | 59/85 [00:50<00:22,  1.18it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 600997\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 71%|███████   | 60/85 [00:50<00:21,  1.19it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 601800\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 72%|███████▏  | 61/85 [00:51<00:20,  1.17it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 600716\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 73%|███████▎  | 62/85 [00:52<00:19,  1.19it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 600782\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 74%|███████▍  | 63/85 [00:53<00:18,  1.20it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 603518\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 75%|███████▌  | 64/85 [00:54<00:17,  1.19it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 600740\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 76%|███████▋  | 65/85 [00:55<00:16,  1.20it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 000069\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 78%|███████▊  | 66/85 [00:55<00:16,  1.19it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 600808\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 80%|████████  | 68/85 [00:57<00:14,  1.17it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 000900\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 81%|████████  | 69/85 [00:58<00:13,  1.17it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 600638\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 82%|████████▏ | 70/85 [00:59<00:12,  1.20it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 300089\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 84%|████████▎ | 71/85 [01:00<00:11,  1.20it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 601988\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 85%|████████▍ | 72/85 [01:00<00:10,  1.20it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 600350\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 86%|████████▌ | 73/85 [01:01<00:10,  1.18it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 600708\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 87%|████████▋ | 74/85 [01:02<00:09,  1.17it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 002619\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 88%|████████▊ | 75/85 [01:03<00:08,  1.17it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 601101\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 89%|████████▉ | 76/85 [01:04<00:07,  1.16it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 000620\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 91%|█████████ | 77/85 [01:05<00:06,  1.19it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 002936\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 92%|█████████▏| 78/85 [01:06<00:05,  1.20it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 601828\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 93%|█████████▎| 79/85 [01:06<00:04,  1.20it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 000415\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 94%|█████████▍| 80/85 [01:07<00:04,  1.21it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 600971\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 96%|█████████▋| 82/85 [01:09<00:02,  1.19it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 000959\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 98%|█████████▊| 83/85 [01:10<00:01,  1.20it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(5) > MA(21) 000791\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\r",
      " 99%|█████████▉| 84/85 [01:11<00:00,  1.21it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 600067\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 85/85 [01:11<00:00,  1.18it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "MA(21) > MA(5) 000709\n",
      "['600051', '000791']\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    }
   ],
   "source": [
    "# Comparing MA-5 & MA-21\n",
    "# MA-5 ts.get_hist_data(pending_list[i])['close'].rolling(5).mean().shift(-4) \n",
    "# MA-21 ts.get_hist_data(pending_list[i])['close'].rolling(21).mean().shift(-20) \n",
    "\n",
    "\n",
    "# If MA-5 > MA-21, it is bullrish\n",
    "# If MA-5 < MA-21, it is bearish\n",
    "\n",
    "MA_5L_21 = []\n",
    "MA_21L_5 = []\n",
    "\n",
    "def MA(code, date):\n",
    "    return ts.get_hist_data(code)['close'].rolling(date).mean().shift(-date + 1)\n",
    "\n",
    "from tqdm import tqdm\n",
    "\n",
    "stock_wanted = []\n",
    "for i in tqdm(range(0, len(pending_list))):\n",
    "    MA5_21 = (MA(pending_list[i],5) - MA(pending_list[i], 21)).to_frame()[0:5] \n",
    "    MA21_5 = (MA(pending_list[i],21) - MA(pending_list[i], 5)).to_frame()[0:5] \n",
    "    # if (dataframe['close'][3] == True) and (dataframe['close'][4] == True):\n",
    "    if (MA5_21['close'][0] > MA5_21['close'][1]) and (MA5_21['close'][1] > MA5_21['close'][2]) and (MA5_21['close'][2] > MA5_21['close'][3]):\n",
    "        print(\"MA(5) > MA(21)\", pending_list[i])\n",
    "        MA_5L_21.append(pending_list[i])\n",
    "    if (MA21_5['close'][0] > MA21_5['close'][1]) and (MA21_5['close'][1] > MA21_5['close'][2]) and (MA21_5['close'][2] > MA21_5['close'][3]):\n",
    "        print(\"MA(21) > MA(5)\", pending_list[i])\n",
    "        MA_21L_5.append(pending_list[i])\n",
    "print(MA_5L_21)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['600051', '000791']\n",
      "['600382', '601390', '000980', '601997', '601699', '600012', '601398', '000825', '000732', '600016', '600926', '600019', '601009', '000926', '600569', '601166', '601588', '601669', '002133', '000040', '000778', '000039', '600000', '600188', '601838', '601077', '601288', '600743', '600269', '601818', '601328', '600657', '002092', '600919', '600376', '600308', '600859', '600153', '601577', '000898', '600015', '601169', '601998', '601939', '601186', '000402', '600823', '600348', '600623', '603323', '601229', '600123', '601005', '601000', '600997', '601800', '600716', '600782', '603518', '600740', '000069', '600808', '000900', '600638', '300089', '601988', '600350', '600708', '002619', '601101', '000620', '002936', '601828', '000415', '600971', '000959', '600067', '000709']\n"
     ]
    }
   ],
   "source": [
    "print(MA_5L_21)\n",
    "print(MA_21L_5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Locally Weighted Scatter Plot\n",
    "\n",
    "局部加权回归散点平滑法"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "def lowess_plot(code_list, time_length):\n",
    "    while time_length <= 15:\n",
    "        return print(\"The prediction is unauthentic, use a longer time period\")\n",
    "    \n",
    "    for i in range(0, len(code_list)):\n",
    "        code = code_list[i]\n",
    "        data = ts.get_hist_data(code).reset_index()\n",
    "\n",
    "        data.head()\n",
    "\n",
    "        data_open = np.array(data['open'])\n",
    "        data_close = np.flipud(np.array(data['close']))\n",
    "        data_date = np.array(data['date'])\n",
    "        data_volume = np.array(data['volume'])\n",
    "\n",
    "        x = range(0, time_length)\n",
    "        y = data_close[0:time_length]\n",
    "        y_1 = data_open[0:time_length]\n",
    "        y_2 = data_volume[0:time_length]\n",
    "        \n",
    "        # lowess will return our \"smoothed\" data with a y value for at every x-value\n",
    "        lowess = sm.nonparametric.lowess(y, x, frac= 0.3)\n",
    "        lowess_x = list(zip(*lowess))[0]\n",
    "        lowess_y = list(zip(*lowess))[1]\n",
    "\n",
    "\n",
    "        # run scipy's interpolation. There is also extrapolation I believe\n",
    "        f = interp1d(np.flipud(lowess_x), np.flipud(lowess_y), bounds_error=False)\n",
    "\n",
    "        xnew = [i/10. for i in range(400)]\n",
    "\n",
    "        # this this generate y values for our xvalues by our interpolator\n",
    "        # it will MISS values outsite of the x window (less than 3, greater than 33)\n",
    "        # There might be a better approach, but you can run a for loop\n",
    "        #and if the value is out of the range, use f(min(lowess_x)) or f(max(lowess_x))\n",
    "        ynew = f(xnew)\n",
    "\n",
    "        print(\"The prediction is not the reality, just for fun!\")\n",
    "        plt.title(code_list[i]+ \"Local Regression Simulation\")\n",
    "        plt.plot(x, y, 'o')\n",
    "        plt.plot(lowess_x, lowess_y, color = \"red\")\n",
    "        plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "How low you want to predict: 100\n",
      "The prediction is not the reality, just for fun!\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The prediction is not the reality, just for fun!\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "time_length = input(\"How low you want to predict: \") \n",
    "lowess_plot(MA_5L_21, int(time_length))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
